Enum (এনাম) Java তে একটি বিশেষ ক্লাস টাইপ যা একটি ফিক্সড সেটের ভ্যালু (constants) ডিফাইন করতে ব্যবহৃত হয়। এটি Java 5 থেকে java.lang প্যাকেজে অন্তর্ভুক্ত করা হয়েছে। Enum প্রাথমিকভাবে ব্যবহার করা হয় যখন আপনার কোন ভ্যারিয়েবল বা কনস্ট্যান্টের সম্ভাব্য মানগুলি পূর্বনির্ধারিত এবং পরিবর্তনযোগ্য না থাকে।
Enum ক্লাস ডিফাইন করে আপনি একটি ভ্যালু (constant) লিস্ট তৈরি করতে পারেন, যা আপনার প্রোগ্রামের মধ্যে একটি নির্দিষ্ট সেটের মধ্যে থাকবে। এই ভ্যালুগুলি immutable হয় এবং type-safe (এনাম ভ্যালু প্রকারের সাথে মেলে এমন একমাত্র মান গ্রহণ করা হয়)।
Enum এর প্রয়োজন কেন?
- Code readability and maintainability: এনাম কনস্ট্যান্টের মাধ্যমে কোডে ধ্রুবক মান ব্যবহার করা আরও সহজ এবং বোধগম্য হয়।
- Type safety: এনাম ক্লাস ব্যবহার করার মাধ্যমে আপনি ভুল কনস্ট্যান্ট মান ব্যবহার থেকে রক্ষা পান, যেহেতু কম্পাইলার এনাম টাইপ চেকিং করে।
- Avoid magic numbers or strings: অ্যাপ্লিকেশনের মধ্যে যেকোনো ধ্রুবক মান যেমন, সংখ্যা বা স্ট্রিং ব্যবহার করার পরিবর্তে, আপনি এনাম ব্যবহার করতে পারেন, যা কোডের বুঝতে সহজ করে তোলে।
- Easy to extend and manage: যখন ভবিষ্যতে নতুন কনস্ট্যান্ট যুক্ত করার প্রয়োজন হয়, তখন এটি সহজেই করা যায়।
Enum কীভাবে কাজ করে?
Java-এ Enum একটি বিশেষ ধরনের ক্লাস যা java.lang.Enum ক্লাস থেকে ইনহেরিট করে। একবার একটি এনাম ডিফাইন করা হলে, তার সমস্ত কনস্ট্যান্টগুলি অপরিবর্তনীয় (immutable) এবং পূর্বনির্ধারিত থাকে।
Enum তৈরি করার প্রক্রিয়া:
এনাম ক্লাস তৈরি করতে সাধারণত enum কিওয়ার্ড ব্যবহার করা হয়।
Enum Syntax:
enum EnumName {
CONSTANT1, CONSTANT2, CONSTANT3;
}
Enum Example:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
switch (today) {
case MONDAY:
System.out.println("Start of the week!");
break;
case FRIDAY:
System.out.println("Almost weekend!");
break;
default:
System.out.println("Mid week!");
break;
}
}
}
Output:
Start of the week!
Explanation:
- এখানে,
Dayএকটিenumযা সাপ্তাহিক দিনের কনস্ট্যান্ট তৈরি করে। - আপনি
Day.MONDAYব্যবহার করে কনস্ট্যান্ট অ্যাক্সেস করতে পারেন। switchস্টেটমেন্টের মাধ্যমে এনাম কনস্ট্যান্টের উপর নির্ভর করে কন্ডিশন চেক করা হয়েছে।
Enum এর অন্যান্য ফিচারসমূহ:
- Enum with fields, methods, and constructors:
এনামে আপনি ফিল্ড, কনস্ট্রাক্টর এবং মেথড ব্যবহার করতে পারেন। এতে করে এনাম কনস্ট্যান্টের জন্য অতিরিক্ত ডেটা যোগ করা সম্ভব হয়।
Example with fields and methods:
enum Day {
SUNDAY("Weekend"), MONDAY("Workday"), TUESDAY("Workday"), WEDNESDAY("Workday"),
THURSDAY("Workday"), FRIDAY("Workday"), SATURDAY("Weekend");
private String typeOfDay;
// Constructor
Day(String typeOfDay) {
this.typeOfDay = typeOfDay;
}
// Method
public String getTypeOfDay() {
return this.typeOfDay;
}
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println(today + " is a " + today.getTypeOfDay());
}
}
Output:
MONDAY is a Workday
Explanation:
DayএনামেtypeOfDayনামের একটি ফিল্ড রয়েছে, যা প্রতিটি কনস্ট্যান্টের সাথে যুক্ত থাকে।getTypeOfDay()মেথড ব্যবহার করে প্রতিটি দিনের টাইপ পাওয়া যায়।
- Enum Iteration:
Java এ, আপনি একটি for-each লুপ ব্যবহার করে এনামের সমস্ত কনস্ট্যান্ট পেতে পারেন।
Example with iteration:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
// Iterating through enum values
for (Day day : Day.values()) {
System.out.println(day);
}
}
}
Output:
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
Explanation:
Day.values()মেথডটি এনামের সমস্ত কনস্ট্যান্ট প্রদান করে, এবংfor-eachলুপে তাদের উপস্থাপন করা হয়।
- Enum Comparison:
এনামের কনস্ট্যান্টগুলিকে == অপারেটর বা compareTo() মেথড দিয়ে তুলনা করা যেতে পারে।
Example with comparison:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
if (today == Day.MONDAY) {
System.out.println("It's Monday!");
}
// Using compareTo
int comparison = today.compareTo(Day.FRIDAY);
System.out.println("Comparison result: " + comparison); // Negative value because MONDAY comes before FRIDAY
}
}
Output:
It's Monday!
Comparison result: -4
Explanation:
==অপারেটর এনাম কনস্ট্যান্টগুলির তুলনা করতে ব্যবহৃত হয়।compareTo()মেথডটি এনাম কনস্ট্যান্টগুলির মধ্যে একটি লেক্সিকোগ্রাফিক্যাল কম্প্যারিজন করে, এবং একটি নেতিবাচক, শূন্য অথবা ধনাত্মক মান রিটার্ন করে।
Enum এর সুবিধা:
- Type Safety: এনাম ব্যবহার করলে শুধুমাত্র ডিফাইন করা কনস্ট্যান্টগুলো ব্যবহার করা যাবে, ফলে ভুল মান ব্যবহারের সম্ভাবনা কমে যায়।
- Improved Readability: স্ট্রিং বা নম্বরের পরিবর্তে এনাম কনস্ট্যান্ট ব্যবহার করা কোডকে আরও পরিষ্কার এবং বোধগম্য করে।
- Built-in Methods: Java এনামগুলির জন্য অনেক বিল্ট-ইন মেথড সরবরাহ করে, যেমন
values(),valueOf(),ordinal()ইত্যাদি। - Switch Statements: এনাম কনস্ট্যান্টগুলি
switchস্টেটমেন্টের মধ্যে সরাসরি ব্যবহার করা যায়, যা কোডকে আরও পরিষ্কার এবং সহজ করে তোলে।
Java তে Enum হল একটি শক্তিশালী এবং কার্যকরী ফিচার যা ফিক্সড সেট কনস্ট্যান্টের জন্য ব্যবহৃত হয়। এটি কোডের রিডেবিলিটি এবং মেইনটেইনেবিলিটি উন্নত করে এবং type safety প্রদান করে, যার ফলে ত্রুটি কম হয়। এনাম বিভিন্ন কাজের জন্য উপযোগী, যেমন ডে অফ উইক, মুড, মাস, স্টেটাস কনস্ট্যান্ট ইত্যাদি।
Read more